/**
 * @Copyright:Copyright (c) 2007 - 2023
 * 
 */
package com.tengtong.commons.lang;

import java.util.Objects;

/**
 * 数据工具
 *
 * @author lin_jinming
 * @since: v1.0
 */
public class NumberUtils {
    
    /**
     * 将对象转为一个整数（如果不能转就抛出异常）
     *
     * @param o
     * @return
     */
    public static int toInt(Object o) {
        Objects.requireNonNull(o, "params o must not be null.");
        if(o instanceof Number n) {
            return n.intValue();
        }
        return Integer.parseInt(StringUtils.asString(o));
    }
    
    /**
     * 如果成功转换就返回，不成功就抛异常 e
     *
     * @param o
     * @param e
     * @return
     */
    public static int toInt(Object o, Throwable e) throws Throwable {
        try {
            return toInt(o);
        }
        catch (Exception ex) {
            throw e;
        }
    }
    
    /**
     * 尝试转换为整数，如果没法转就返回默认的 defaultValue
     *
     * @param o
     * @param defaultValue
     * @return
     */
    public static int tryToInt(Object o, int defaultValue) {
        try {
            return toInt(o);
        }
        catch (Exception e) {
            return defaultValue;
        }
    }
}
